package com.jiaqiang.chatgpt.domain.files;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;

import java.io.Serializable;

/**
 * 上传文件应答；封装个空的文件应答结果对象
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class UploadFileResponseListResponse extends FileListResponse implements Serializable {

    // 'fine-tune', 'assistants', 'batch', 'user_data', 'responses'

    @Getter
    @AllArgsConstructor
    public enum Purpose {
        // 指定上传文件用于微调（fine-tune）模型。在机器学习领域，
        // 微调通常是指在一个已经训练好的模型上进一步训练，以适应特定任务或领域的数据
        FINE_TUNE("fine_tune"),
        // 指定上传文件用于助手（assistants）模型。助手模型是一种特殊用途的模型，
        // 专门设计用于与用户进行对话或执行特定的任务，比如生成文本、回答问题等。
        ASSISTANTS("assistants"),
        // 指定上传文件用于批处理（batch）任务。批处理任务通常涉及对大量数据进行处理或分析，
        // 上传的文件可能包含需要批量处理的数据或指令。
        BATCH("batch"),
        // 指定上传文件作为用户数据。这可以用于上传用户的个人数据或自定义数据集，以便在模型训练或应用中使用。
        USER_DATA("user_data"),
        // 指定上传文件用于模型响应数据。这可能包含模型生成的文本、答案、建议等响应数据，用于模型评估、分析或后续处理。
        RESPONSES("responses"),
        ;
        private final String code;
    }
}
